/*************************************************************************************
*                                  SRL ENGINE                                        *
*                                                                                    *
*                                                                                    *
*  File : SRL_Texture.h                                                              *
*  Author: SRL Killing                                                               *
*  Date: 25/02/10 20:30                                                              *
*  Description:                                                                      *
*                                                                                    *  
*  Licence :  LGPL                                                                   *
*                                                                                    *
*    Copyright (C) 2010 Pecatte Baptiste                                             *
*                                                                                    *
*    This program is free software; you can redistribute it and/or                   *
*    modify it under the terms of the GNU Lesser General Public                      *
*    License as published by the Free Software Foundation; either                    *
*    version 2.1 of the License, or (at your option) any later version.              *
*                                                                                    *
*    This program is distributed in the hope that it will be useful,                 *
*    but WITHOUT ANY WARRANTY; without even the implied warranty of                  *
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU                *
*    Lesser General Public License for more details.                                 *
*                                                                                    *
*    You should have received a copy of the GNU Lesser General Public                *
*    License along with this program; if not, write to the Free Software             *
*    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    *
*                                                                                    *
**************************************************************************************/

#ifndef DefineHeaderTexture
#define DefineHeaderTexture
namespace srl {
    
    class Texture {
        public:
            Texture();
            Texture(GLuint id);
            Texture(const srl::Texture &t);
            ~Texture();
            
            void Bind();          // Bind texture
            void DBind();
            void BindFBO(GLenum attachment);
        	
        	void GenerateMipmap();
        	  
            void MakeGLTex();     // Make texture with glTexImage2D
            bool Test();
        
            GLint mHeight;        // Height of texture
            GLint mWidth;         // Width of texture
            GLenum mFormat;        // Format of image
            GLenum mType;          // Type of image
            GLenum mTarget;		   // Target of tex (GL_TEXTURE_1D, GL_TEXTURE_2D...)
            GLint mInternalFormat; // Size of a texel
            
            GLuint mId;            // OpenGL texture id
            unsigned char *mTexels;       // Pixels data
            
        // Make Loader friend to acess private properties for load any type of file
        friend class LoaderPng;
    };
    
};
#endif
